package com.dragon.modules.yuegou.client.wechat_mini.client;

import com.dragon.modules.yuegou.client.wechat_mini.request.QrcodeRequest;
import com.dragon.modules.yuegou.client.wechat_mini.request.UnlimitedQrcodeRequest;

import javax.annotation.Nullable;

/**
 * 小程序码接口
 * 
 * @author liuwu
 *
 */
public interface WxaCodeClient {

	/**
	 * 获取小程序二维码，适用于需要的码数量较少的业务场景。通过该接口生成的小程序码，永久有效，有数量限制。<br>
	 * 注意： 1.接口只能生成已发布的小程序的二维码。开发版的带参二维码可以在开发者工具预览时生成。 2.总共生成的码数量限制为100,000，请谨慎调用。
	 * 
	 * @param accessToken 接口调用凭证
	 * @param path        扫码进入的小程序页面路径，最大长度 128 字节，不能为空；对于小游戏，可以只传入 query
	 *                    部分，来实现传参效果，如：传入 "?foo=bar"，即可在 wx.getLaunchOptionsSync
	 *                    接口中的 query 参数获取到 {foo:"bar"}。
	 * @param width       二维码的宽度，单位 px。最小 280px，最大 1280px 返回值
	 * @return 二维码字节数组（jpg格式，二维码图片最大也就100KB左右，用数组可以接受）
	 */
	byte[] createQRCode(String accessToken, String path, @Nullable Integer width);

	/**
	 * 获取小程序码，适用于需要的码数量较少的业务场景。通过该接口生成的小程序码，永久有效，有数量限制。<br>
	 * 注意： 1.接口只能生成已发布的小程序的二维码。开发版的带参二维码可以在开发者工具预览时生成。 2.总共生成的码数量限制为100,000，请谨慎调用。
	 * 3. 如果配置层透明底色图片，那么返回的图片是png格式的，否则是jpg格式的。
	 * 
	 * @param accessToken 接口调用凭证
	 * @param request     请求信息
	 * @return 二维码字节数组（二维码图片最大也就100KB左右，用数组可以接受）
	 */
	byte[] get(String accessToken, QrcodeRequest request);

	/**
	 * 获取小程序码，适用于需要的码数量极多的业务场景。通过该接口生成的小程序码，永久有效，数量暂无限制。
	 * 注意：如果配置层透明底色图片，那么返回的图片是png格式的，否则是jpg格式的。
	 * 
	 * @param accessToken 接口调用凭证
	 * @param request     请求信息
	 * @return 二维码字节数组（二维码图片最大也就100KB左右，用数组可以接受）
	 */
	byte[] getUnlimited(String accessToken, UnlimitedQrcodeRequest request);

}
